python如何操作excel,在excel中读取和写入数据 您所在的位置:网站首页 python 如何读取文件内容 python如何操作excel,在excel中读取和写入数据

python如何操作excel,在excel中读取和写入数据

2023-07-11 01:13| 来源: 网络整理| 查看: 265

Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsoft Office的组件发布了5.0版之后,Excel就开始成为所适用操作平台上的电子制表软件的霸主。

1、介绍

excel本身是有很多功能的,比如说格式调试,图表展示,公式计算等内容,但是对于我们在python爬虫中,我们关注的仅仅是纯数据,其他的格式内容,咱们暂时不提。

我们使用python操作excel的时候,我们要使用两个模块,分别是xlrd和xlwt,下面我们就分别使用python下的pip命令来安装下这两个模块。

2、安装 pip install xlrd=1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install xlwt -i https://pypi.tuna.tsinghua.edu.cn/simple 3、python读取excel表格 3.1 创建测试文件

首先我们先创建一个名字为ceshi.xlsx的测试文件,以供我们使用,文件如下:

3.2 读取excel中所有sheet的信息

在这里有好几种方式,我们分别来尝试下;

(1)获取所有的sheet

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Names = Workbook.sheet_names() print(Sheet_Names)

运行结果如下:

['汇总', '姓名', '年龄', '地区', '出生年月', '爱好']

(2)根据索引获取sheet

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Names = Workbook.sheet_by_index(0) print(Sheet_Names.name)

运行结果如下:

汇总

从上面我们可以看到,我们根据索引为“0”,获取到了第一个sheet,那么同理,要获取第二个sheet的话,我们是不是应该配置索引为“1”即可;

(3)根据名字获取sheet

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_name('出生年月') print(Sheet_Name.name)

运行结果如下:

出生年月

(4)获取所有sheet对象

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Names = Workbook.sheets() print(Sheet_Names) for i in Sheet_Names: print(i.name)

运行结果如下:

[, , , , , ] 汇总 姓名 年龄 地区 出生年月 爱好 3.3 获取该sheet中的行数和列数 import xlrd WorkBook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = WorkBook.sheet_by_name('汇总') print("名字为{}的sheet中,一共有{}行".format(Sheet_Name.name, Sheet_Name.nrows)) print("名字为{}的sheet中,一共有{}列".format(Sheet_Name.name, Sheet_Name.ncols))

运行结果如下:

名字为汇总的sheet中,一共有9行 名字为汇总的sheet中,一共有5列 4、使用python获取excel中指定单元格的数据

Cell就表示单元格,单元格也就是excel中的最小单位,一个个小格子就是单元格。

且,在python中,每一行和列都是从0开始,从左上角依次类推+1的。

4.1 获取指定行和列的cell对象

方法:

sheet.cell(row,col)

示例代码:

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.cell(0, 1)) # 获取第0行,第1列的数据,也就是B1单元格的数据

运行结果如下:

text:'年龄' 4.2 获取指定行的某几列的cell对象

方法:

sheet.row_slice(row,start_col,end_col)

示例代码:

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.row_slice(1, 0, 5)) # 获取第一行的0-5列之间的,不包括第5列

运行结果如下:

[text:'张三', number:18.0, text:'北京', xldate:36526.0, text:'吃饭'] 4.3 获取指定列的某几行的cell对象

方法:

sheet.col_slice(col,start_row,end_row)

示例代码如下:

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.col_slice(0, 0, 5)) # 获取第0列的,0-5行之间的数据,不包括第5行

运行结果如下:

[text:'姓名', text:'张三', text:'李四', text:'王五', text:'赵六'] 4.4 获取指定行和列的值

方法:

sheet.cell_value(row,col)

示例代码如下:

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.cell_value(1, 2)) # 获取第1行,第二列的单元格的数据,即C2的数据

运行结果如下:

北京 4.5 获取指定行的某几列的值

方法:

sheet.row_values(row,start_col,end_col)

示例代码如下:

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.row_values(1, 2, 5)) # 获取第一行,第2-5列的值

运行结果如下 :

['北京', '2000-1-1', '吃饭'] 4.6 获取指定列的某几行的值

方法:

sheet.col_values(col,start_row,end_row)

示例代码如下:

import xlrd Workbook = xlrd.open_workbook('ceshi.xlsx') Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.col_values(4, 0, 3)) # 获取第4列,0-3行的值,不包括第三行

运行结果如下:

['爱好', '吃饭', '睡觉'] 5、excel中Cell的数据类型

xlrd.XL_CELL_TEXT(Text):文本类型;

xlrd.XL_CELL_NUMBER(Number):数值类型;

xlrd.XL_CELL_DATE(Date):日期时间类型;

xlrd.XL_CELL_BOOLEAN(Bool):布尔类型;

xlrd.XL_CELL_BLANK:空白数据类型。

6、使用python往excel中写入数据 6.1 步骤梳理

导入xlwt模块

创建一个Workbook对象

创建一个Sheet对象

使用sheet.write(row,col,data)方法把数据写入到Sheet下指定行和列中

保存成Excel文件

6.2 示例代码 import xlwt import random Workbook = xlwt.Workbook(encoding='utf-8') Sheet_Name = Workbook.add_sheet('运维家') Headers = ['姓名', '年龄', '地区'] for index, Header in enumerate(Headers): Sheet_Name.write(0, index, Header) Names = ['张三', '李四', '王五'] Areas = ['北京', '山西', '上海'] for index, Name in enumerate(Names): Sheet_Name.write(index + 1, 0, Name) Sheet_Name.write(index + 1, 1, random.randint(20, 40)) Sheet_Name.write(index + 1, 2, random.choice(Areas)) Workbook.save('ceshi2.xls')

运行之后,会生成一个名字为ceshi2.xls的文件,我们打开看看是什么样子的,如下图:

从上面看,这个文件是符合我们的预期的。

7、使用python在已有的excel文件中新增内容 7.1 步骤梳理

导入xlrd模块

读取已有的excel文件,生成一个对象

使用put_cell(self, rowx, colx, ctype, value, xf_index)方法添加数据

导入xlwt模块

新建一个workbook对象

新建一个sheet对象

将刚添加过数据的sheet每个单元格的数据读取出来,并写入到新的excel文件中

保存excel文件

7.2 示例代码 import xlrd, xlwt Workbook = xlrd.open_workbook('ceshi2.xls') Sheet_Name = Workbook.sheet_by_index(0) Sheet_Name.put_cell(4, 0, xlrd.XL_CELL_TEXT, '赵六', None) Sheet_Name.put_cell(4, 1, xlrd.XL_CELL_TEXT, '30', None) Sheet_Name.put_cell(4, 2, xlrd.XL_CELL_TEXT, '吃饭', None) Workbook_1 = xlwt.Workbook(encoding='utf-8') Sheet_Name_1 = Workbook_1.add_sheet(Sheet_Name.name) for row in range(Sheet_Name.nrows): for col in range(Sheet_Name.ncols): Sheet_Name_1.write(row, col, Sheet_Name.cell_value(row, col)) Workbook_1.save('ceshi3.xls')

运行之后,会生成一个ceshi3.xls文件,不止将ceshi2.xls文件中的内容放置到了ceshi3.xls文件中,并新增了一行信息,如下图:

报错解决 报错一 xlrd.biffh.XLRDError: Excel xlsx file; not supported

这个意思是你的xlrd版本太高了,卸载重新安装一个1.2.0版本的就好了。

pip install xlrd==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

好了今天的分享就到这里了,最后多说一句,小编也是一名python开发工程师,这里有我自己整理的一套最新的python系统学习教程,如果你需要的话,微信扫描下方CSDN官方认证二维码即可领取

零基础Python学习资源介绍 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。 在这里插入图片描述

二、Python学习软件

工欲善其事,必先利其器。学习Python常用的开发软件都在这里了! 在这里插入图片描述

三、Python入门学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

四、Python练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈! 在这里插入图片描述

五、Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~在这里插入图片描述

六、Python面试资料

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 在这里插入图片描述 在这里插入图片描述

七、资料领取

上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码输入“领取资料”免费领取!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有